{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*Qiskit Chemistry, H2O ground state computation*_\n",
    "\n",
    "This notebook demonstrates how to use Qiskit Chemistry to compute the ground state energy of a water (H2O) molecule using VQE and UCCSD.\n",
    "\n",
    "While the molecule has been input below to the driver in xyz format, the Z-matrix format is also support. H2O in Z-matrix format would look like this \n",
    "```\n",
    "H; O 1 1.08; H 2 1.08 1 104.5\n",
    "```\n",
    "and is convenient when the goal is to change bond angle, or plot the energy changing distance(s) while preserving the angle.\n",
    "\n",
    "This notebook has been written to use the PYSCF chemistry driver. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pylab\n",
    "\n",
    "from qiskit_nature.second_q.drivers import PySCFDriver\n",
    "from qiskit_nature.second_q.transformers import FreezeCoreTransformer\n",
    "from qiskit_nature.second_q.mappers import ParityMapper\n",
    "from qiskit_nature.second_q.algorithms import GroundStateEigensolver\n",
    "\n",
    "from qiskit_algorithms import NumPyMinimumEigensolver\n",
    "\n",
    "from qiskit_algorithms.optimizers import SLSQP\n",
    "\n",
    "from qiskit_nature.second_q.circuit.library import HartreeFock, UCCSD\n",
    "from qiskit_algorithms import VQE\n",
    "from qiskit.primitives import Estimator"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we create and run a driver to produce our molecule object. The molecule object holds data from the drivers in a common way so it can then be used independently of which specific driver created it.\n",
    "\n",
    "And let's print some of fields it has."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Nuclear repulsion energy: 9.193913160623385 Ha\n",
      "Reference energy: -74.96294665653873 Ha\n",
      "Number of spin orbitals: 14\n",
      "Number of alpha electrons: 5\n",
      "Number of beta electrons: 5\n"
     ]
    }
   ],
   "source": [
    "driver = PySCFDriver(atom='O 0.0 0.0 0.0; H 0.757 0.586 0.0; H -0.757 0.586 0.0', charge=0, spin=0, basis='sto3g')\n",
    "molecule = driver.run()\n",
    "\n",
    "print(f'Nuclear repulsion energy: {molecule.nuclear_repulsion_energy} Ha')\n",
    "print(f'Reference energy: {molecule.reference_energy} Ha')\n",
    "print(f'Number of spin orbitals: {molecule.num_spin_orbitals}')\n",
    "print(f'Number of alpha electrons: {molecule.num_alpha}')\n",
    "print(f'Number of beta electrons: {molecule.num_beta}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of qubits: 10, number of paulis: 551\n",
      "=== GROUND STATE ENERGY ===\n",
      " \n",
      "* Electronic ground state energy (Hartree): -84.206272446429\n",
      "  - computed part:      -23.544497240444\n",
      "  - FreezeCoreTransformer extracted energy part: -60.661775205985\n",
      "~ Nuclear repulsion energy (Hartree): 9.193913160623\n",
      "> Total ground state energy (Hartree): -75.012359285806\n",
      " \n",
      "=== MEASURED OBSERVABLES ===\n",
      " \n",
      "  0:  # Particles: 8.000 S: 0.000 S^2: 0.000 M: 0.000\n",
      " \n",
      "=== DIPOLE MOMENTS ===\n",
      " \n",
      "~ Nuclear dipole moment (a.u.): [0.0  2.21475902  0.0]\n",
      " \n",
      "  0: \n",
      "  * Electronic dipole moment (a.u.): [0.0  1.578672632401  0.0]\n",
      "    - computed part:      [0.0  1.577787979435  0.0]\n",
      "    - FreezeCoreTransformer extracted energy part: [0.0  0.000884652966  0.0]\n",
      "  > Dipole moment (a.u.): [0.0  0.636086387599  0.0]  Total: 0.636086387599\n",
      "                 (debye): [0.0  1.616770178304  0.0]  Total: 1.616770178304\n",
      " \n"
     ]
    }
   ],
   "source": [
    "transformer = FreezeCoreTransformer()\n",
    "transformed_molecule = transformer.transform(molecule)\n",
    "mapper = ParityMapper(num_particles=transformed_molecule.num_particles)\n",
    "\n",
    "algo = NumPyMinimumEigensolver()\n",
    "algo.filter_criterion = transformed_molecule.get_default_filter_criterion()\n",
    "solver = GroundStateEigensolver(mapper, algo)\n",
    "op, _ = solver.get_qubit_operators(transformed_molecule)\n",
    "print(f'Number of qubits: {op.num_qubits}, number of paulis: {len(op.paulis)}')\n",
    "result = solver.solve(transformed_molecule)\n",
    "print(result)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Using VQE\n",
    "\n",
    "Here we will start with the qubit operator that we computed above. We need to setup an optimizer, variational form and initial state for use with VQE.\n",
    "\n",
    "The variational form and UCCSD are a little more complex since they need information about numbers of orbitals and numbers of electrons, as well as what qubit mapping etc was used for the qubit operator."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of qubits: 8, number of paulis: 514\n",
      "=== GROUND STATE ENERGY ===\n",
      " \n",
      "* Electronic ground state energy (Hartree): -84.20617191118\n",
      "  - computed part:      -23.544396705194\n",
      "  - FreezeCoreTransformer extracted energy part: -60.661775205985\n",
      "~ Nuclear repulsion energy (Hartree): 9.193913160623\n",
      "> Total ground state energy (Hartree): -75.012258750556\n",
      " \n",
      "=== MEASURED OBSERVABLES ===\n",
      " \n",
      "  0:  # Particles: 8.000 S: 0.000 S^2: 0.000 M: 0.000\n",
      " \n",
      "=== DIPOLE MOMENTS ===\n",
      " \n",
      "~ Nuclear dipole moment (a.u.): [0.0  2.21475902  0.0]\n",
      " \n",
      "  0: \n",
      "  * Electronic dipole moment (a.u.): [None  1.578671818463  None]\n",
      "    - computed part:      [None  1.577787165497  None]\n",
      "    - FreezeCoreTransformer extracted energy part: [0.0  0.000884652966  0.0]\n",
      "  > Dipole moment (a.u.): [None  0.636087201537  None]  Total: None\n",
      "                 (debye): [None  1.616772247128  None]  Total: None\n",
      " \n"
     ]
    }
   ],
   "source": [
    "tapered_mapper = transformed_molecule.get_tapered_mapper(mapper)\n",
    "estimator = Estimator()\n",
    "\n",
    "optimizer = SLSQP(maxiter=10000, ftol=1e-9)\n",
    "ansatz = UCCSD(\n",
    "    transformed_molecule.num_spatial_orbitals,\n",
    "    transformed_molecule.num_particles,\n",
    "    tapered_mapper,\n",
    "    initial_state=HartreeFock(\n",
    "    transformed_molecule.num_spatial_orbitals,\n",
    "    transformed_molecule.num_particles,\n",
    "    tapered_mapper,\n",
    "    )\n",
    ")\n",
    "vqe = VQE(estimator, ansatz, optimizer)\n",
    "vqe.initial_point = [0] * ansatz.num_parameters\n",
    "solver = GroundStateEigensolver(tapered_mapper, vqe)\n",
    "op, _ = solver.get_qubit_operators(transformed_molecule)\n",
    "print(f'Number of qubits: {op.num_qubits}, number of paulis: {len(op.paulis)}')\n",
    "\n",
    "result = solver.solve(transformed_molecule)\n",
    "print(result)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Z-matrix format\n",
    "\n",
    "Z-matrix was mentioned in the introduction. Lets show it in use in a quick final example here. We'll use NumPyMinimumEigensolver as the goal here is just to show the technique. We will keep the bond angle between the Hydrogen atoms and Oxygen constant while varying the interatomic distance of one the Hydrogen atoms. This is simple to do in Z-matrix format, though can of course be done using xyz format but that needs more work to compute the coordinates each time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "distances = [x * 0.01 + 1.0 for x in range(15)]\n",
    "energies = np.empty(len(distances))\n",
    "\n",
    "for i, distance in enumerate(distances):\n",
    "    driver = PySCFDriver(f'H; O 1 1.08; H 2 {distance} 1 104.5', basis='sto3g')\n",
    "    molecule = driver.run()\n",
    "    transformer = FreezeCoreTransformer()\n",
    "    transformed_molecule = transformer.transform(molecule)\n",
    "    mapper = ParityMapper(num_particles=transformed_molecule.num_particles)\n",
    "    algo = NumPyMinimumEigensolver()\n",
    "    algo.filter_criterion = transformed_molecule.get_default_filter_criterion()\n",
    "    solver = GroundStateEigensolver(mapper, algo)\n",
    "    result = solver.solve(transformed_molecule)\n",
    "    energies[i] = result.total_energies[0]\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'H2O molecule, one H atom distance varied')"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAHHCAYAAACFl+2TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABx20lEQVR4nO3dd3xN9/8H8NfNutlDdojYIksisYLSGmkFTVtfSu1RVbNK0VJKjVKttrSKCL+2alO1Z2oTJFYkVhJkSCRkCBk3n98faW5dWTfckfF6Ph730Z5zPufc9+fcy30543MkQggBIiIiIlIrHW0XQERERFQTMHQRERERaQBDFxEREZEGMHQRERERaQBDFxEREZEGMHQRERERaQBDFxEREZEGMHQRERERaQBDFxEREZEGMHQRVTFDhgxBvXr1tF0GYmNjIZFIsHbtWm2XQpVISd9PiUSC2bNna6WemkjV+zs0NBQSiQShoaEq22ZNxdBFld7atWshkUhw/vz5Epd36tQJHh4e8uns7GwsX74c3bp1g6OjI8zMzODj44NffvkFMpmsxG3cvXsXH330EerVqwepVAo7OzsEBQXh5MmTaukTVV2zZ8+GRCLBw4cPS1xer1499OjRQ2Xvt379eixdulRl26sqamq/qXrT03YBRKp2584djBs3Dp07d8akSZNgbm6O/fv34+OPP8aZM2ewbt06hfYnT55E9+7dAQAjRoyAm5sbkpKSsHbtWnTo0AE//PADxo0bp42uEGH9+vW4evUqJk6cqO1SXtrTp0+hp1exn5vq0G9teZn9TZrBT4WqHQcHB1y5cgXu7u7yeaNGjcKwYcMQEhKCmTNnolGjRgCAR48eoXfv3jAyMsLJkyfRsGFD+TqTJk1CQEAAJk6cCF9fX/j7+2u8L0TVgaGhobZLqPYKCgqQm5sLQ0ND7u9KjKcXqdqxsbFRCFxF3nnnHQDA9evX5fN+/fVXJCUlYfHixQqBCwCMjIywbt06SCQSzJkzp8z3LLq+6dtvv8Xy5cvRoEEDGBsbo1u3brh37x6EEJg7dy7q1KkDIyMjvP3220hLSyu2nZ9//hnu7u6QSqVwcnLCmDFj8Pjx43L7XFBQgKVLl8Ld3R2Ghoawt7fHqFGj8OjRo2Jt9+7di44dO8LMzAzm5uZo2bIl1q9fL19er149DBkypNh6nTp1QqdOncqtJSoqCr1790atWrVgaGgIPz8/7Ny5s9z1yrJ582b4+vrCyMgINjY2GDBgAOLj4xXaDBkyBKampoiPj0dQUBBMTU1ha2uLyZMnFzutXJH9pS5//fUXAgMD4eTkBKlUioYNG2Lu3LkKtXbq1Am7d+9GXFwcJBIJJBKJwvVSycnJGD58OOzt7WFoaIjmzZsXO5Krqu9mSXbs2AEPDw8YGhrCw8MD27dvL7Hdi9cYZWZmYuLEiQqn87t27YqLFy+W2+/c3Fx8+eWX8PX1hYWFBUxMTNChQwccPXq01H6vXLkSDRs2hFQqRcuWLREWFlasxqioKPTp0we2trYwMjJC06ZN8cUXXyi0iY+Px7Bhw2Bvbw+pVAp3d3esWbOm3P3k4eGB119/vdj8goIC1K5dG71795bP+/bbb+Hv7w9ra2sYGRnB19cXW7ZsKXGfjh07Fn/88Yf874x9+/aVuL8rUvv9+/cRFBQEExMT2NnZ4ZNPPkFOTk65fSTl8EgXVRnp6eklXkeTl5en1PpJSUkACkNZkb///huGhobo06dPievUr18f7du3x5EjR/D06VMYGRmV+R5//PEHcnNzMW7cOKSlpWHRokXo06cP3njjDYSGhmLq1Km4desWfvrpJ0yePFnhL73Zs2fjq6++QpcuXTB69GhER0fjl19+QVhYGE6ePAl9ff1S33fUqFFYu3Ythg4divHjxyMmJgbLli1DeHi4wrpr167FsGHD4O7ujunTp8PS0hLh4eHYt28f+vfvr9R+LMu1a9fQrl071K5dG9OmTYOJiQk2bdqEoKAgbN26VR58K6KoXy1btsSCBQvw4MED/PDDDzh58iTCw8NhaWkpbyuTyRAQEIDWrVvj22+/xaFDh7BkyRI0bNgQo0ePrvD+KktpwaSgoEDpfpmammLSpEkwNTXFkSNH8OWXXyIjIwOLFy8GAHzxxRdIT0/H/fv38f333wMATE1NARSeQurUqRNu3bqFsWPHon79+ti8eTOGDBmCx48fY8KECQrv9yrfzZIcOHAA7733Htzc3LBgwQKkpqZi6NChqFOnTrl9/+ijj7BlyxaMHTsWbm5uSE1NxYkTJ3D9+nW0aNGizH5nZGRg9erV6NevH0aOHInMzEwEBwcjICAA586dg7e3t8J7rV+/HpmZmRg1ahQkEgkWLVqEd999F3fu3JF/zpcvX0aHDh2gr6+PDz/8EPXq1cPt27fx999/Y968eQCABw8eoE2bNvKwY2tri71792L48OHIyMgo8zRo3759MXv2bCQlJcHBwUE+/8SJE0hISMD7778vn/fDDz+gV69e+OCDD5Cbm4sNGzbgf//7H3bt2oXAwECF7R45cgSbNm3C2LFjYWNjU+oNNsrW/vTpU3Tu3Bl3797F+PHj4eTkhN9++w1Hjhwp9zMlJQmiSi4kJEQAKPPl7u5e5jZycnKEm5ubqF+/vsjLy5PPt7S0FM2bNy9z3fHjxwsA4vLly6W2iYmJEQCEra2tePz4sXz+9OnTBQDRvHlzhfft16+fMDAwEM+ePRNCCJGcnCwMDAxEt27dhEwmk7dbtmyZACDWrFkjnzd48GDh4uIinz5+/LgAIP744w+Fmvbt26cw//Hjx8LMzEy0bt1aPH36VKFtQUGB/P9dXFzE4MGDi/WxY8eOomPHjsX6HBISIp/XuXNn4enpKe9X0bb9/f1F48aNS9p1ZcrNzRV2dnbCw8NDoeZdu3YJAOLLL7+Uzxs8eLAAIObMmaOwDR8fH+Hr6yufVnZ/lWbWrFnlfh8DAwPL7Vt2dnaxeaNGjRLGxsYK+y8wMFDh8y6ydOlSAUD8/vvv8nm5ubmibdu2wtTUVGRkZAghXv27WRpvb2/h6OiosM0DBw4IAMXqBSBmzZoln7awsBBjxowpc/ul9Ts/P1/k5OQozHv06JGwt7cXw4YNk88r6re1tbVIS0uTz//rr78EAPH333/L57322mvCzMxMxMXFKWz3+T8Xw4cPF46OjuLhw4cKbd5//31hYWFR4udZJDo6WgAQP/30k8L8jz/+WJiamiqs++J2cnNzhYeHh3jjjTcU5gMQOjo64tq1a8Xe78X9rWztRd+pTZs2yds8efJENGrUSAAQR48eLbWPpByeXqQqY/ny5Th48GCxl5eXV7nrjh07FpGRkVi2bJnCBaaZmZkwMzMrc92i5RkZGeW+z//+9z9YWFjIp1u3bg0AGDBggML7tm7dGrm5ufJTZIcOHUJubi4mTpwIHZ3//liOHDkS5ubm2L17d6nvuXnzZlhYWKBr1654+PCh/OXr6wtTU1P5aZeDBw8iMzMT06ZNK3bNh0QiKbdv5UlLS8ORI0fQp08fZGZmyutITU1FQEAAbt68WeyUYHnOnz+P5ORkfPzxxwo1BwYGwtXVtcT98tFHHylMd+jQAXfu3JFPK7u/yrN169YSv4/29vZKrf/8UdOi/dWhQwdkZ2cjKiqq3PX37NkDBwcH9OvXTz5PX18f48ePR1ZWFv755x+F9i/73SxJYmIiIiIiMHjwYIVtdu3aFW5ubuXWbmlpibNnzyIhIaHcti/S1dWFgYEBgMKjimlpacjPz4efn5/89OTz+vbtCysrK/l0hw4dAED+nUhJScGxY8cwbNgw1K1bV2Hdoj8XQghs3boVPXv2hBBC4XsTEBCA9PT0Et+7SJMmTeDt7Y2NGzfK58lkMmzZsgU9e/ZU+C48//+PHj1Ceno6OnToUOL2O3bsWO7+rkjte/bsgaOjo8LpTmNjY3z44Ydlvgcpj6cXqcpo1aoV/Pz8is23srIq9fZ9AFi8eDFWrVqFuXPnyu9SLGJmZobMzMwy37doeXnhDECxv7SLfpCcnZ1LnF90DVFcXBwAoGnTpgrtDAwM0KBBA/nykty8eRPp6emws7MrcXlycjIA4Pbt2wCgMLyGKt26dQtCCMycORMzZ84stZbatWsrvc3S9gsAuLq64sSJEwrzDA0NYWtrqzDPyspK4VotZfdXeV577TWFU9XP16CMa9euYcaMGThy5EixQJ+enl7u+nFxcWjcuLFCSAeAZs2ayZc/72W/m6W9NwA0bty42LKmTZuWGUAAYNGiRRg8eDCcnZ3h6+uL7t27Y9CgQWjQoEGZ6xVZt24dlixZgqioKIXLC+rXr1+s7Yv9LgpgRf0rCl9l/blISUnB48ePsXLlSqxcubLENuV9b/r27YvPP/8c8fHxqF27NkJDQ5GcnIy+ffsqtNu1axe+/vprREREKFxLVdI/jErq76vUHhcXh0aNGhV7r5L+/NHLYeiiam3t2rWYOnUqPvroI8yYMaPY8mbNmiE8PBw5OTmQSqUlbuPy5cvQ19cv8QfmRbq6uhWaL4Qod5vlKSgogJ2dHf74448Sl78YQspT2lEvmUxWaj+K6gCAyZMnIyAgoMQ2RXeNqktZ9RVR9f56GY8fP0bHjh1hbm6OOXPmoGHDhjA0NMTFixcxdepUpa8LqwhtfDdL06dPH3To0AHbt2/HgQMHsHjxYnzzzTfYtm0b3nrrrTLX/f333zFkyBAEBQVhypQpsLOzg66uLhYsWCD/h8XzVNG/os9jwIABGDx4cIltyjvi3rdvX0yfPh2bN2/GxIkTsWnTJlhYWODNN9+Utzl+/Dh69eqF1157DT///DMcHR2hr6+PkJAQhZtdipR3jamqaifVYeiiauuvv/7CiBEj8O6772L58uUltunRowdOnz6NzZs3Y8CAAcWWx8bG4vjx4+jSpYtSf8G9LBcXFwBAdHS0wr/2c3NzERMTgy5dupS6bsOGDXHo0CG0a9euzBqL7s68evVqmeHHysqqxDsm4+LiyjwSUbRMX1+/zHor4vn98sYbbygsi46Oli+vCGX3lzqFhoYiNTUV27Ztw2uvvSafHxMTU6xtaSHYxcUFly9fRkFBgcLRrqJTky+zb5RVtO2bN28WWxYdHa3UNhwdHfHxxx/j448/RnJyMlq0aIF58+bJQ1dp/d6yZQsaNGiAbdu2KbSZNWtWRbsB4L/v7dWrV0ttY2trCzMzM8hkspf+btevXx+tWrXCxo0bMXbsWGzbtg1BQUEK/9jbunUrDA0NsX//foX5ISEhL/WeFa3dxcUFV69ehRBCYd8q+5lS+XhNF1VLx44dw/vvv4/XXnsNf/zxR7FTMEVGjRoFOzs7TJkyReG6HwB49uwZhg4dCiEEvvzyS7XW26VLFxgYGODHH39U+Bd4cHAw0tPTi9219Lw+ffpAJpNh7ty5xZbl5+fLA1S3bt1gZmaGBQsW4NmzZwrtnn/Phg0b4syZM8jNzZXP27VrF+7du1dmH+zs7NCpUyf8+uuvSExMLLY8JSWlzPVL4ufnBzs7O6xYsULhVMvevXtx/fr1MvdLaZTdX+pUdPTl+f2em5uLn3/+uVhbExOTEk83du/eHUlJSQrXCeXn5+Onn36CqakpOnbsqIbKCzk6OsLb2xvr1q1TqO3gwYOIjIwsc12ZTFasP3Z2dnByclL4jEvrd0n77uzZszh9+vRL9cXW1havvfYa1qxZg7t37yosK3oPXV1dvPfee9i6dWuJ4UzZ73bfvn1x5swZrFmzBg8fPix2alFXVxcSiURh2JDY2Fjs2LGjgr1S3KaytXfv3h0JCQkKQ1RkZ2eXelqSKo5HuqjaiYuLQ69evSCRSNC7d29s3rxZYbmXl5f8cLq1tTW2bNmCwMBAtGjRotiI9Ldu3cIPP/yg9oFRbW1tMX36dHz11Vd488030atXL0RHR+Pnn39Gy5YtSzwKV6Rjx44YNWoUFixYgIiICHTr1g36+vq4efMmNm/ejB9++AG9e/eGubk5vv/+e4wYMQItW7ZE//79YWVlhUuXLiE7O1s+vtOIESOwZcsWvPnmm+jTpw9u376N33//vdg4ZiVZvnw52rdvD09PT4wcORINGjTAgwcPcPr0ady/fx+XLl2Sty26vT02NrbU7enr6+Obb77B0KFD0bFjR/Tr108+ZES9evXwySefKLeDX2J/qZO/vz+srKwwePBgjB8/HhKJBL/99luJp7x8fX2xceNGTJo0CS1btoSpqSl69uyJDz/8EL/++iuGDBmCCxcuoF69etiyZQtOnjyJpUuXKnUN4qtYsGABAgMD0b59ewwbNgxpaWn46aef4O7ujqysrFLXy8zMRJ06ddC7d280b94cpqamOHToEMLCwrBkyZJy+92jRw9s27YN77zzDgIDAxETE4MVK1bAzc2tzPcty48//oj27dujRYsW+PDDD1G/fn3ExsZi9+7diIiIAAAsXLgQR48eRevWrTFy5Ei4ubkhLS0NFy9exKFDh5Qa26xPnz6YPHkyJk+ejFq1ahU78hQYGIjvvvsOb775Jvr374/k5GQsX74cjRo1wuXLl1+qbxWpfeTIkVi2bBkGDRqECxcuwNHREb/99huMjY1f+r3pBZq/YZKoYoqGjAgLCytxeceOHRWGjDh69GiZt/M/fyt1kZiYGDFy5EhRt25doa+vL2xsbESvXr3E8ePHlaqx6Pb0xYsXK8wvqmXz5s1K9WnZsmXC1dVV6OvrC3t7ezF69Gjx6NEjhTYvDhlRZOXKlcLX11cYGRkJMzMz4enpKT777DORkJCg0G7nzp3C399fGBkZCXNzc9GqVSvx559/KrRZsmSJqF27tpBKpaJdu3bi/PnzSg0ZIYQQt2/fFoMGDRIODg5CX19f1K5dW/To0UNs2bJFoZ2NjY1o06ZNsX6UZOPGjcLHx0dIpVJRq1Yt8cEHH4j79+8X2y8mJibF1i0a4uFFyu6v0raXkpJS4nIXFxelhow4efKkaNOmjTAyMhJOTk7is88+E/v37y92a35WVpbo37+/sLS0LDYcw4MHD8TQoUOFjY2NMDAwEJ6ensU+D1V9N0uydetW0axZMyGVSoWbm5vYtm1bid/P5//c5eTkiClTpojmzZsLMzMzYWJiIpo3by5+/vlnhXVK63dBQYGYP3++cHFxEVKpVPj4+Ihdu3YVe9/S+v1iPUWuXr0q3nnnHWFpaSkMDQ1F06ZNxcyZMxXaPHjwQIwZM0Y4OzsLfX194eDgIDp37ixWrlxZ7r4q0q5dOwFAjBgxosTlwcHBonHjxkIqlQpXV1cREhJS4ncYQKnDbpTUP2Vrj4uLE7169RLGxsbCxsZGTJgwQT6cCoeMeHUSIdR4tSQRUQkiIyPh7u5e4oCPRETVFa/pIiKNO3r0KNq2bcvARUQ1Co90EREREWkAj3QRERERaQBDFxEREZEGMHQRERERaQBDFxEREZEGcHDUSqKgoAAJCQkwMzMr9fEXREREVLkIIZCZmQknJ6dSn35ShKGrkkhISICzs7O2yyAiIqKXcO/ePdSpU6fMNgxdlUTRIzvu3bsHc3NzLVdDREREysjIyICzs7NSj95i6Kokik4pmpubM3QRERFVMcpcGsQL6YmIiIg0gKGLiIiISAMYuoiIiIg0gKGLiIiISAMYuoiIiIg0gKGLiIiISAMYuoiIiIg0gKGLiIiISAMYuoiIiIg0gKGLiIiISAMYuoiIiIg0gKGLiIiISAMYuoiIiKja++dGCvJlBVqtgaGLiIiIqrVzMWkYvOYc3l5+Es/yZFqrg6GLiIiIqq2cfBmmb7sMAPCqYwlDfV2t1cLQRURERNXWyn/u4HbKE9iYSjHtTVet1sLQRURERNVSzMMn+OnoLQDAlz3dYGGsr9V6GLqIiIio2hFCYMaOK8jNL8BrTWzR08tR2yUxdBEREVH1sz08HidvpUKqp4Ov3/aARCLRdkkMXURERFS9PHqSi693XwcATOjSGHWtjbVcUSGGLiIiIqpWFuy9jrQnuWhqb4aRHRpouxw5hi4iIiKqNs7cScWm8/cBAPPf9YC+buWJOpWnEiIiIqJXkJMvwxfbrwAAPmhdF74utbRckSKGLiIiIqoWVoT+NybXZ1oek6skDF1ERERU5d1JycLyf8fkmtXTDRZG2h2TqyQMXURERFSlCSHwxfaryJUVoGMTW/SoBGNylYShi4iIiKq0bRfjcfpOKgz1dfB1UOUYk6skDF1ERERUZaU9ycXXuyMBABM6N4FzrcoxJldJGLqIiIioypq/5zoeZefB1cEMIzrU13Y5ZaoSoSs0NBQSiaTEV1hYGAAgNja2xOVnzpwpc9t3795FYGAgjI2NYWdnhylTpiA/P1++PDExEf3790eTJk2go6ODiRMnlridzZs3w9XVFYaGhvD09MSePXtU1n8iIiIq7vTtVGy5cB8SCTDvHc9KNSZXSSp3df/y9/dHYmKiwmvEiBGoX78+/Pz8FNoeOnRIoZ2vr2+p25XJZAgMDERubi5OnTqFdevWYe3atfjyyy/lbXJycmBra4sZM2agefPmJW7n1KlT6NevH4YPH47w8HAEBQUhKCgIV69eVc0OICIiIgXFx+Sy0nJF5ZMIIYS2i6iovLw81K5dG+PGjcPMmTMBFB7pql+/PsLDw+Ht7a3Udvbu3YsePXogISEB9vb2AIAVK1Zg6tSpSElJgYGBgUL7Tp06wdvbG0uXLlWY37dvXzx58gS7du2Sz2vTpg28vb2xYsUKpWrJyMiAhYUF0tPTYW5urtQ6RERENdXSQzew9NBN2JpJcWhSR60NEVGR3+8qcaTrRTt37kRqaiqGDh1abFmvXr1gZ2eH9u3bY+fOnWVu5/Tp0/D09JQHLgAICAhARkYGrl27pnQ9p0+fRpcuXRTmBQQE4PTp06Wuk5OTg4yMDIUXERERle92ShZ+PnobQOUdk6skVTJ0BQcHIyAgAHXq1JHPMzU1xZIlS7B582bs3r0b7du3R1BQUJnBKykpSSFwAZBPJyUlKV1PadspaxsLFiyAhYWF/OXs7Kz0+xEREdVUhWNyXUGurACdmtoi0LNyjslVEq2GrmnTppV6gXzRKyoqSmGd+/fvY//+/Rg+fLjCfBsbG0yaNAmtW7dGy5YtsXDhQgwYMACLFy/WZJeUNn36dKSnp8tf9+7d03ZJREREld6WC/dx5k4aDPV1MPftyjsmV0n0tPnmn376KYYMGVJmmwYNGihMh4SEwNraGr169Sp3+61bt8bBgwdLXe7g4IBz584pzHvw4IF8mbIcHBzk6z2/nbK2IZVKIZVKlX4PIiKimi7tSS7m77kOAPikS+Uek6skWg1dtra2sLW1Vbq9EAIhISEYNGgQ9PXLP38bEREBR8fSDzu2bdsW8+bNQ3JyMuzs7AAABw8ehLm5Odzc3JSuq23btjh8+LDCcBIHDx5E27Ztld4GERERlW3e7v/G5BrWvnKPyVUSrYauijpy5AhiYmIwYsSIYsvWrVsHAwMD+Pj4AAC2bduGNWvWYPXq1fI227dvx/Tp0+WnLLt16wY3NzcMHDgQixYtQlJSEmbMmIExY8YoHIWKiIgAAGRlZSElJQUREREwMDCQB7MJEyagY8eOWLJkCQIDA7FhwwacP38eK1euVNeuICIiqlFO3X6IrRcLx+Sa/27lH5OrJFUqdAUHB8Pf3x+urq4lLp87dy7i4uKgp6cHV1dXbNy4Eb1795YvT09PR3R0tHxaV1cXu3btwujRo9G2bVuYmJhg8ODBmDNnjsJ2i4IcAFy4cAHr16+Hi4sLYmNjARSOI7Z+/XrMmDEDn3/+ORo3bowdO3bAw8NDhb0nIiKqmZ7lyTBje+HYlwNau6BF3co/JldJquQ4XdURx+kiIiIq2XcHb+DHwzdhZybFoU87wtyw8gwRUe3H6SIiIqKa4VZyFn4JvQUAmN3LvVIFropi6CIiIqJKSQiBz7dfQZ5M4A1XO7zlofzIApURQxcRERFVSpsv3Me5mDQY6eviq17uVWpMrpIwdBEREVGlk5qV89+YXF0bV7kxuUrC0EVERESVzrzd1/E4Ow/NHM0xtF3VG5OrJAxdREREVKmcvPUQ28LjIZEAC6romFwlqR69ICIiomrhWZ4MX2y/AgAY1MYF3s6W2i1IhRi6iIiIqNL4+egtxKZmw95cik8Dmmq7HJVi6CIiIqJK4VZyJn755zYAYHbPqj0mV0kYuoiIiEjrCgoEPt92FXkygc6udnizio/JVRKGLiIiItK6zRfu4Vzsv2NyvV31x+QqCUMXERERadXDrBzM3xMFAPi0WxPUsar6Y3KVhKGLiIiItGre7utIf5oHN0dzDPGvp+1y1Iahi4iIiLTmxM2H2P7cmFx61WRMrpJU354RERFRpfYsT4YZOwrH5Brcth6aV6MxuUrC0EVERERasezIc2NydWui7XLUjqGLiIiINO7Gg0z8eqxwTK6vernDrJqNyVUShi4iIiLSqIICgS+2X0GeTKBLM3sEuFe/MblKwtBFREREGrXp/D2ExT6CsUH1HZOrJAxdREREpDEpmTmYv+c6AGBS1yaobWmk5Yo0h6GLiIiINObr3ZHIeJYPd6fqPSZXSRi6iIiISCOO3UjBXxEJ0KkBY3KVpGb1loiIiLSicEyuqwCAQW3rwauOpXYL0gKGLiIiIlK7n47cxN20bDiYG2JyQFNtl6MVDF1ERESkVtFJmfj1nzsAgK/edoepVE/LFWkHQxcRERGpTb6sAJ9tuYT8gpo1JldJGLqIiIhIbVYev4NL99NhZqiHr4M8tF2OVjF0ERERkVpEJ2Vi6cGbAIBZPd3hYGGo5Yq0i6GLiIiIVC5fVoApWy4hV1aAN1zt8F6L2touSesYuoiIiEjlfj12B5fvp8PcUA8L3vWsMY/6KQtDFxEREalUdFImlh66AQCY3csd9uY1+7RiEYYuIiIiUpk8WQEmb76EPJlAl2Z2eMeHpxWLMHQRERGRyqwIvY0r8emwMNLH/Hd4WvF5DF1ERESkEtcTM/DjkcK7FWf3coMdTysqYOgiIiKiV6Z4WtEeQd48rfgihi4iIiJ6Zb+E3sa1hAxYGutj/rsePK1YAoYuIiIieiWRCRn48XDhacWvernDzoynFUvC0EVEREQvrei0Yn6BQDc3e/Rq7qTtkiothi4iIiJ6acuP3kJkYuFpxa/f4WnFsjB0ERER0Uu5lpCOZUduAeBpRWUwdBEREVGF5eYXYPLmy8gvEHjT3YGnFZXA0EVEREQVtuzoLVxPzICVsT7mBvG0ojIYuoiIiKhCrsan4+ejhacV57ztAVszqZYrqhoYuoiIiEhphacVC+9WfMvDAT28HLVdUpXB0EVERERKW3bkJqKSMlHLxICnFSuIoYuIiIiUcjU+HctDbwMA5r7tARtTnlasCIYuIiIiKldOvgyfbroEWYFAoKcjAnlascIYuoiIiKhcPx2+hegHmbA2McCct921XU6VxNBFREREZbp8/zF++eff04pBHrDmacWXwtBFREREpcrJl2Hy5n9PK3o5orsnTyu+LIYuIiIiKtWPh2/ixoMs2JgaYO7bHtoup0pj6CIiIqISXbr3GL/8e7fi10EeqGVioOWKqjaGLiIiIirmWV7hacUCAfRs7oQ3PXha8VUxdBEREVExPxy+iZvJhacVv+rFuxVVgaGLiIiIFETce4xf/yk6rejJ04oqwtBFREREcs+fVnzb2wlvejhou6Rqg6GLiIiI5L4/dAO3krNgYyrF7J48rahKDF1EREQEALh49xFWHbsDAJj/jgeseFpRpRi6iIiICM/yZJjy72nFIG8ndHPnaUVVY+giIiIifH/wBm6nPIGtmRSzebeiWjB0ERER1XAX4h5h1fHC04oL3vGEpTFPK6oDQxcREVEN9vxpxXd9aqOLm722S6q2GLqIiIhqsCUHonHn4RPYmUkxi3crqhVDFxERUQ11IS4Nq0/EAAAWvOsJC2N9LVdUvTF0ERER1UBPc2WYvPkyhADea1EHnZvxtKK6MXQRERHVQN8eiEbMwyewN5fiy55u2i6nRqgSoSs0NBQSiaTEV1hYGAAgNja2xOVnzpwpc9t3795FYGAgjI2NYWdnhylTpiA/P1++PDExEf3790eTJk2go6ODiRMnFtvGqlWr0KFDB1hZWcHKygpdunTBuXPnVLoPiIiIVCUsNg1rThaeVlz4rhcsjHhaUROqROjy9/dHYmKiwmvEiBGoX78+/Pz8FNoeOnRIoZ2vr2+p25XJZAgMDERubi5OnTqFdevWYe3atfjyyy/lbXJycmBra4sZM2agefPmJW4nNDQU/fr1w9GjR3H69Gk4OzujW7duiI+PV80OICIiUpGnuYV3KwoB9Patg9dd7bRdUo0hEUIIbRdRUXl5eahduzbGjRuHmTNnAig80lW/fn2Eh4fD29tbqe3s3bsXPXr0QEJCAuztC89lr1ixAlOnTkVKSgoMDBTHKenUqRO8vb2xdOnSMrcrk8lgZWWFZcuWYdCgQUrVkpGRAQsLC6Snp8Pc3FypdYiIiCpqzt+RWHMyBg7mhtj/yWs8yvWKKvL7XSWOdL1o586dSE1NxdChQ4st69WrF+zs7NC+fXvs3LmzzO2cPn0anp6e8sAFAAEBAcjIyMC1a9deur7s7Gzk5eWhVq1apbbJyclBRkaGwouIiEidzsWkIeTUv3crvufJwKVhVTJ0BQcHIyAgAHXq1JHPMzU1xZIlS7B582bs3r0b7du3R1BQUJnBKykpSSFwAZBPJyUlvXR9U6dOhZOTE7p06VJqmwULFsDCwkL+cnZ2fun3IyIiKk92bj6mbCk8rdjHrw5eb8rTipqm1dA1bdq0Ui+QL3pFRUUprHP//n3s378fw4cPV5hvY2ODSZMmoXXr1mjZsiUWLlyIAQMGYPHixZrsEhYuXIgNGzZg+/btMDQ0LLXd9OnTkZ6eLn/du3dPg1USEVFNs2hfNOJSs+FoYYgZPXi3ojboafPNP/30UwwZMqTMNg0aNFCYDgkJgbW1NXr16lXu9lu3bo2DBw+WutzBwaHYXYYPHjyQL6uob7/9FgsXLsShQ4fg5eVVZlupVAqpVFrh9yAiIqqos3dSsfZULABg4XteMDfkaUVt0GrosrW1ha2trdLthRAICQnBoEGDoK9f/hcmIiICjo6OpS5v27Yt5s2bh+TkZNjZFR5mPXjwIMzNzeHmVrF/BSxatAjz5s3D/v37i91RSUREpC3pT/MwadMlAEBfP2d0bKL87y6pllZDV0UdOXIEMTExGDFiRLFl69atg4GBAXx8fAAA27Ztw5o1a7B69Wp5m+3bt2P69OnyU5bdunWDm5sbBg4ciEWLFiEpKQkzZszAmDFjFI5CRUREAACysrKQkpKCiIgIGBgYyIPZN998gy+//BLr169HvXr15NeDmZqawtTUVC37goiIqDxCCHyx/QriHz+Fcy0jzOjRTNsl1WhVKnQFBwfD398frq6uJS6fO3cu4uLioKenB1dXV2zcuBG9e/eWL09PT0d0dLR8WldXF7t27cLo0aPRtm1bmJiYYPDgwZgzZ47CdouCHABcuHAB69evh4uLC2JjYwEAv/zyC3JzcxXeCwBmzZqF2bNnv2KviYiIXs7mC/ex63IidHUk+OF9H5jxtKJWVclxuqojjtNFRESqdCclCz1+OoHsXBmmBDTFmNcbabukaqnaj9NFREREpcvNL8D4DeHIzpWhTYNa+KhjQ22XRGDoIiIiqna+PRCNq/EZsDTWx9K+PtDVkWi7JAJDFxERUbVy7EYKVh67AwBY9J4XHCxKHzOSNIuhi4iIqJp4mJUjHx5iQJu66OZe8TEnSX0YuoiIiKoBIQSmbL6Eh1k5aGJvihmBHHW+smHoIiIiqgZCTsbiaHQKDPR08GM/Hxjq62q7JHoBQxcREVEVdy0hHQv3Fg78PSOwGVwdOPRQZcTQRUREVIVl5+Zj/J/hyJUVoEszewxs46LtkqgUDF1ERERV2Nxdkbid8gT25lIs6u0FiYTDQ1RWDF1ERERV1J4rifjz3D1IJMD3fbxRy8RA2yVRGRi6iIiIqqD4x08xbetlAMBHHRvCv5GNliui8jB0ERERVTGyAoFPNkQg41k+mtexwKSuTbRdEimBoYuIiKiKWXbkFs7FpsHEQBc/9vOBvi5/zqsCfkpERERVyPnYNPxw+AYAYG6QB1ysTbRcESmLoYuIiKiKSH+ahwkbIlAggCBvJ7zboo62S6IKYOgiIiKqAoQQ+Hz7FcQ/foq6tYwxN8hD2yVRBTF0ERERVQGbz9/H7suJ0NOR4If3vWFmqK/tkqiCGLqIiIgqudspWZi18xoA4JOuTeBT10rLFdHLYOgiIiKqxHLyZRj/Zzie5snQtoE1PurYUNsl0Uti6CIiIqrEFu+LxrWEDFgZ6+P7vt7Q1eFjfqoqhi4iIqJKKjQ6GatPxAAAvnnPCw4WhlquiF4FQxcREVEllJKZg8mbLwEABrZxQTd3By1XRK+KoYuIiKiSKSgQmLLlEh5m5aKpvRm+CGym7ZJIBRi6iIiIKpmQU7EIjU6BVE8HP/bzgaG+rrZLIhVg6CIiIqpErsan45u9UQCAGYHN0NTBTMsVkaowdBEREVUS2bn5GL8hHLmyAnR1s8eANi7aLolUSK8ijQsKCvDPP//g+PHjiIuLQ3Z2NmxtbeHj44MuXbrA2dlZXXUSERFVe3P+jsSdlCewN5fim/e8IJFweIjqRKkjXU+fPsXXX38NZ2dndO/eHXv37sXjx4+hq6uLW7duYdasWahfvz66d++OM2fOqLtmIiKiamfPlURsCLsHiQT4vq83apkYaLskUjGljnQ1adIEbdu2xapVq9C1a1fo6xd/3lNcXBzWr1+P999/H1988QVGjhyp8mKJiIiqo/jHTzFt62UAwOiODeHf0EbLFZE6SIQQorxG169fR7Nmyt2umpeXh7t376JhQz6moCIyMjJgYWGB9PR0mJuba7scIiLSkHxZAfqtOoOw2EfwdrbE5o/aQl+Xl1xXFRX5/VbqU1U2cAGAvr4+AxcREZGSlh29hbDYRzCV6uHH930YuKqxCl1I/7zs7GzcvXsXubm5CvO9vLxeuSgiIqKaICw2DT8evgkAmBvkjrrWxlquiNSpwqErJSUFQ4cOxd69e0tcLpPJXrkoIiKi6i49Ow8TN0SgQADv+NTGOz51tF0SqVmFj2FOnDgRjx8/xtmzZ2FkZIR9+/Zh3bp1aNy4MXbu3KmOGomIiKoVIQQ+334F8Y+fom4tY8x5213bJZEGVPhI15EjR/DXX3/Bz88POjo6cHFxQdeuXWFubo4FCxYgMDBQHXUSERFVG5vO38PuK4nQ05Hgx34+MDMsPioAVT8VPtL15MkT2NnZAQCsrKyQkpICAPD09MTFixdVWx0REVE1cys5C7N3RgIAJnVrAm9nS+0WRBpT4dDVtGlTREdHAwCaN2+OX3/9FfHx8VixYgUcHR1VXiAREVF1kZMvw/g/w/E0Twb/htb46DXe7V+TVPj04oQJE5CYmAgAmDVrFt5880388ccfMDAwwNq1a1VdHxERUbWxaF80IhMzYGWsj+/7ekNHh4/5qUmUGhy1LNnZ2YiKikLdunVhY8MRdF8WB0clIqreQqOTMSQkDACwepAfurjZa7kiUoWK/H6/9DhdRYyNjdGiRYtX3QwREVG1lZKZg8mbLwEABrV1YeCqoZQOXZMmTVKq3XfffffSxRAREVU3sgKBTzdfwsOsXDS1N8Pn3ZV/ygtVL0qHrvDwcIXpEydOwNfXF0ZGRvJ5EgnPTRMRET1v6aEbOHYjBVI9HfzYzweG+rraLom0ROnQdfToUYVpMzMzrF+/Hg0aNFB5UURERNXBgWtJ+OnILQDAwvc80dTBTMsVkTbxqZpERERqcDslC5M2FV7HNcS/Hh/zQwxdREREqpaVk49Rv11AVk4+WtWrhS8CeR0XMXQRERGplBACUzZfwq3kLNibS7HsAx/o6/LnlipwTdfly5cVpoUQiIqKQlZWlsJ8Ly8v1VRGRERUBa345w72Xk2Cvq4EP3/gCzszQ22XRJWE0qHL29sbEokEz4+l2qNHDwCQz5dIJJDJZKqvkoiIqAo4fjMFi/dHAQBm9XSHr4uVliuiykTp0BUTE6POOoiIiKq0e2nZGPdnOAoE0MevDj5oXVfbJVElo3TocnFxUWcdREREVdazPBk++v0CHmfnwauOBea87cGxK6kYpa7su3v3boU2Gh8f/1LFEBERVTVCCHy+/QquJWSglokBfhngywFQqURKha6WLVti1KhRCAsLK7VNeno6Vq1aBQ8PD2zdulVlBRIREVVmv52Jw7aL8dCRAMv6+aC2pVH5K1GNpNTpxcjISMybNw9du3aFoaEhfH194eTkBENDQzx69AiRkZG4du0aWrRogUWLFqF79+7qrpuIiEjrwmLTMOfvSADA9Leawb+RjZYrospMIp6/HbEcT58+xe7du3HixAnExcXh6dOnsLGxgY+PDwICAuDh4aHOWqu1jIwMWFhYID09Hebm5touh4iIyvEg4xl6/HQCKZk56OHliJ/6+fA6rhqoIr/fFQpdpD4MXUREVUdufgH6rTqDC3GP0NTeDNvH+MPYQOl706gaqcjvN4fIJSIiqqC5uyJxIe4RzAz18OtAXwYuUgpDFxERUQVsPn8Pv52JAwD88L436tmYaLkiqioYuoiIiJR05X46vthxFQAwsUtjvOFqr+WKqCph6CIiIlJCalYOPvr9AnLzC9DZ1Q7j32is7ZKoiqlw6Hry5Ik66iAiIqq08mUFGL8hHPGPn6K+jQm+6+sNHR3eqUgVU+HQZW9vj2HDhuHEiRPqqIeIiKjSWXwgGidvpcLYQBcrBvjCwkhf2yVRFVTh0PX7778jLS0Nb7zxBpo0aYKFCxciISFBHbURERFp3e7Lifj1nzsAgEW9vdDUwUzLFVFVVeHQFRQUhB07diA+Ph4fffQR1q9fDxcXF/To0QPbtm1Dfn6+OuokIiLSuBsPMjFlyyUAwKjXGqCHl5OWK6Kq7KUvpLe1tcWkSZNw+fJlfPfddzh06BB69+4NJycnfPnll8jOzlZlnURERBqV/jQPo367gOxcGdo1ssaUgKbaLomquJceze3BgwdYt24d1q5di7i4OPTu3RvDhw/H/fv38c033+DMmTM4cOCAKmslIiLSiIICgU83RSDm4RPUtjTCj+/7QE+XN/zTq6lw6Nq2bRtCQkKwf/9+uLm54eOPP8aAAQNgaWkpb+Pv749mzZqpsk4iIiKN+enILRy6ngwDPR2sGOALa1OptkuiaqDCsX3o0KFwcnLCyZMnERERgbFjxyoELgBwcnLCF198oaoaERoaColEUuIrLCwMABAbG1vi8jNnzpS57bt37yIwMBDGxsaws7PDlClTFK5LS0xMRP/+/dGkSRPo6Ohg4sSJZW5vw4YNkEgkCAoKetVuExGRFhyJeoClh28AAOYFecCzjoWWK6LqosJHuhITE2FsbFxmGyMjI8yaNeuli3qRv78/EhMTFebNnDkThw8fhp+fn8L8Q4cOwd3dXT5tbW1d6nZlMhkCAwPh4OCAU6dOITExEYMGDYK+vj7mz58PAMjJyYGtrS1mzJiB77//vsw6Y2NjMXnyZHTo0KGiXSQiokog9uETTNgQASGAAW3q4n9+ztouiaqRCoeu/Px8ZGRkFJsvkUgglUphYGCgksKeZ2BgAAcHB/l0Xl4e/vrrL4wbNw4SieLgdNbW1gpty3LgwAFERkbi0KFDsLe3h7e3N+bOnYupU6di9uzZMDAwQL169fDDDz8AANasWVPqtmQyGT744AN89dVXOH78OB4/flzxjhIRkdZk5+Zj1G8XkPksHy3qWuLLHu7lr0RUARU+vWhpaQkrK6tiL0tLSxgZGcHFxQWzZs1CQUGBOuoFAOzcuROpqakYOnRosWW9evWCnZ0d2rdvj507d5a5ndOnT8PT0xP29v89OysgIAAZGRm4du1ahWqaM2cO7OzsMHz4cKXa5+TkICMjQ+FFRETaIYTAZ1suI/pBJmzNpPhlgC8M9HjhPKlWhY90rV27Fl988QWGDBmCVq1aAQDOnTuHdevWYcaMGUhJScG3334LqVSKzz//XOUFA0BwcDACAgJQp04d+TxTU1MsWbIE7dq1g46ODrZu3SofU6xXr14lbicpKUkhcAGQTyclJSldz4kTJxAcHIyIiAil11mwYAG++uorpdsTEZH6BJ+Iwa7LidDTkeDnD1rA3txQ2yVRNVTh0LVu3TosWbIEffr0kc/r2bMnPD098euvv+Lw4cOoW7cu5s2bV27omjZtGr755psy21y/fh2urq7y6fv372P//v3YtGmTQjsbGxtMmjRJPt2yZUskJCRg8eLFpYYuVcjMzMTAgQOxatUq2NjYKL3e9OnTFerNyMiAszOvHSAi0rRTtx9iwd4oAMDMHm5oWa+Wliui6qrCoevUqVNYsWJFsfk+Pj44ffo0AKB9+/a4e/duudv69NNPMWTIkDLbNGjQQGE6JCQE1tbWSgWp1q1b4+DBg6Uud3BwwLlz5xTmPXjwQL5MGbdv30ZsbCx69uwpn1d0alVPTw/R0dFo2LBhsfWkUimkUt6CTESkTQmPn2Ls+nDICgTebVEbg9q6aLskqsYqHLqcnZ0RHByMhQsXKswPDg6WH6lJTU2FlZVVuduytbWFra2t0u8thEBISIj8DsPyREREwNHRsdTlbdu2xbx585CcnAw7OzsAwMGDB2Fubg43NzelanJ1dcWVK1cU5s2YMQOZmZn44YcfePSKiKiSepYnw+jfLyDtSS7cncwx/x3PYjdnEalShUPXt99+i//973/Yu3cvWrZsCQA4f/48oqKisGXLFgBAWFgY+vbtq9pKARw5cgQxMTEYMWJEsWXr1q2DgYEBfHx8ABQO4rpmzRqsXr1a3mb79u2YPn06oqIKDyN369YNbm5uGDhwIBYtWoSkpCTMmDEDY8aMUTgKVXStVlZWFlJSUhAREQEDAwO4ubnB0NAQHh4eCrUUjVv24nwiIqochBCY9dc1XLqfDktjfawY4AtDfV1tl0XVXIVDV69evRAdHY1ff/0V0dHRAIC33noLO3bsQL169QAAo0ePVmmRRYKDg+Hv769wjdfz5s6di7i4OOjp6cHV1RUbN25E79695cvT09PlNQOArq4udu3ahdGjR6Nt27YwMTHB4MGDMWfOHIXtFgU5ALhw4YL8Id+xsbGq7SAREWnEn+fuYeP5e9CRAD/184FzrbLHnyRSBYkQQijbOC8vD2+++SZWrFiBxo0bq7OuGicjIwMWFhZIT0+Hubm5tsshIqq2Lt59hL6/nkaeTGDqm64Y3an4dbdEyqrI73eFBiHR19fH5cuXX6k4IiIibUnJzMHo3y8gTybwlocDPurYoPyViFSkwiO/DRgwAMHBweqohYiISG3yZAUY88dFPMjIQSM7Uyz+X3NeOE8a9VKPAVqzZg0OHToEX19fmJiYKCz/7rvvVFYcERGRqszfcx3nYtNgJtXDrwN9YSqt8E8g0Sup8Dfu6tWraNGiBQDgxo0bCsv4LwYiIqqMtoffR8jJWADAkj7N0dDWVLsFUY1U4dB19OhRddRBRESkFuF3H2H6tsLxFMe90Qjd3JUb/JpI1V76aZ63bt3C/v378fTpUwCFY54QERFVJrEPn2D4uvN4lleAN1ztMLFLE22XRDVYhUNXamoqOnfujCZNmqB79+5ITEwEAAwfPhyffvqpygskIiJ6GalZORgScg5pT3LhWdsCP/Xzga4OL4Mh7alw6Prkk0+gr6+Pu3fvwtj4v8Hk+vbti3379qm0OCIiopfxNFeG4evOIzY1G3WsjBA8xA8mvHCetKzC38ADBw5g//79qFOnjsL8xo0bIy4uTmWFERERvQxZgcD4DeGIuPcYFkb6WDu0FezMDLVdFlHFj3Q9efJE4QhXkbS0NIXnFRIREWmaEAJf/X0NByMfwEBPB6sH+6GRHe9UpMqhwqGrQ4cO+L//+z/5tEQiQUFBARYtWoTXX39dpcURERFVxMpjd/B/p+MgkQBL+3qjZb1a2i6JSK7CpxcXLVqEzp074/z588jNzcVnn32Ga9euIS0tDSdPnlRHjUREROXaeSkBC/ZGAQC+6N4M3T0dtVwRkaIKH+ny8PDAjRs30L59e7z99tt48uQJ3n33XYSHh6NhQz40lIiINO/MnVRM3nQJADCsXX2M6MBnKlLlIxEcYKtSqMhTyomI6D83H2TivV9OIeNZPt7ycMDy/i2gw6EhSEMq8vv9UvfPPn78GOfOnUNycjIKCgoUlg0aNOhlNklERFRhDzKeYUhIGDKe5cPXxQrf9/Vm4KJKq8Kh6++//8YHH3yArKwsmJubKzxvUSKRMHQREZFGZOXkY2hIGOIfP0UDGxOsHuQHQ31dbZdFVKoKX9P16aefYtiwYcjKysLjx4/x6NEj+SstLU0dNRIRESnIkxVg9O8XEJmYARtTA6wb1gpWJgbaLouoTBUOXfHx8Rg/fnyJY3URERGpmxAC07ddwfGbD2Gkr4s1Q1rCuRZ/k6jyq3DoCggIwPnz59VRCxERUbmWHrqJLRfuQ0cCLP/AB151LLVdEpFSKnxNV2BgIKZMmYLIyEh4enpCX19fYXmvXr1UVhwREdHzNoXdww+HbwIAvg7yxBuu9lquiEh5FR4yQken9INjEokEMpnslYuqiThkBBFR2UKjkzF83XnICgTGvt4IkwOaarskIvUOGfHiEBFERETqdjU+HWP+uAhZgcC7PrXxabcm2i6JqMIqfE0XERGRJt1Ly8bQtWF4kitDu0bWWPiel8JwRURVhdKhq3v37khPT5dPL1y4EI8fP5ZPp6amws3NTaXFERFRzZaenYeha8OQkpkDVwcz/DLAFwZ6PF5AVZPS39z9+/cjJydHPj1//nyFcbny8/MRHR2t2uqIiKjGepYnw8jfzuNWchYczA0RMrQlzA31y1+RqJJSOnS9eL09H9lIRETqUlAg8OnmSzgXkwYzqR7WDmsJRwsjbZdF9Ep4jJaIiCqdhfuisPtyIvR1Jfh1oC9cHXhXN1V9SocuiURS7MJFXshIRESqtvZkDFYeuwMAWNTbC/6NbLRcEZFqKD1khBACQ4YMgVQqBQA8e/YMH330EUxMTABA4XovIiKil7HvahK+2hUJAJgS0BTv+NTRckVEqqN06Bo8eLDC9IABA4q1GTRo0KtXRERENdKFuEeYsCEcQgD9W9fFx50aarskIpVSOnSFhISosw4iIqrB7qRkYcS6MOTkF6Czqx3m9HLnJSxU7fBCeiIi0qqHWTkYEhKGR9l58KpjgZ/6+0BPlz9PVP3wW01ERFqTnZuP4WvDcDctG861jBA8uCWMDSr8hDqiKoGhi4iItCJfVoDxf4bj0v10WBrrY+3QVrA1k2q7LCK1YegiIiKNE0Jg9t/XcOh6MqR6Ogge7IeGtqbaLotIrRi6iIhI43755zZ+P3MXEgnww/ve8HWppe2SiNSOoYuIiDRqR3g8Fu0rfFbvzEA3vOnhqOWKiDSDoYuIiDTm1K2HmLLlEgBgRPv6GNa+vpYrItIchi4iItKI6KRMjPrtAvJkAoGejvi8ezNtl0SkUQxdRESkdknpzzAk5Bwyc/LRsp4VlvRpDh0dDn5KNQtDFxERqVX60zwMCTmHxPRnaGhrglWD/GCor6vtsog0jqGLiIjUJv1pHgatOYeopEzYmEqxdmgrWBobaLssIq3gsL9ERKQW6U/zMCj4rHzw0/8b1grOtYy1XRaR1vBIFxERqdzzgcvKWB/rR7SBm5O5tssi0iqGLiIiUqkXA9cfDFxEAHh6kYiIVCj9aR4GBp/FZQYuomIYuoiISCXSs/MwcM1/gWv9yDZo5sjARVSEoYuIiF5ZenYeBgSfxZX4dNQyMcAfI1ozcBG9gKGLiIheyYuBa/3I1nB1YOAiehEvpCciopfGwEWkPB7pIiKil5KenYcPgs/ganwGAxeREhi6iIiowh5n52JA8Fl54PpzZBs0dTDTdllElRpPLxIRUYU8H7isGbiIlMYjXUREpLTH2bn4YPVZXEsoDFzrGbiIlMYjXUREpBQGLqJXwyNdRERUrucDl41pYeBqYs/ARVQRDF1ERFSmR08KA1dkIgMX0atg6CIiolK9GLj+HNkGjRm4iF4Kr+kiIqISMXARqRaPdBERUTGPnuSi/+qzuJ6YARtTKf4c2ZqBi+gVMXQREZGCtH+PcBUFrg0ftkYjOwYuolfF04tERCTHwEWkPjzSRUREAAoDV/9VZxCVlMnARaQGDF1ERFRC4GqDRnam2i6LqFrh6UUiohru+cBla8bARaQuVSJ0hYaGQiKRlPgKCwsDAMTGxpa4/MyZM2Vu++7duwgMDISxsTHs7OwwZcoU5Ofny5cnJiaif//+aNKkCXR0dDBx4sQSt/P48WOMGTMGjo6OkEqlaNKkCfbs2aOyfUBEpA6pWTkKgevPkQxcROpSJU4v+vv7IzExUWHezJkzcfjwYfj5+SnMP3ToENzd3eXT1tbWpW5XJpMhMDAQDg4OOHXqFBITEzFo0CDo6+tj/vz5AICcnBzY2tpixowZ+P7770vcTm5uLrp27Qo7Ozts2bIFtWvXRlxcHCwtLV+yx0RE6pealYMPVp9VOMLV0JaBi0hdqkToMjAwgIODg3w6Ly8Pf/31F8aNGweJRKLQ1traWqFtWQ4cOIDIyEgcOnQI9vb28Pb2xty5czF16lTMnj0bBgYGqFevHn744QcAwJo1a0rczpo1a5CWloZTp05BX18fAFCvXr2X6CkRkWY8H7jszKT4k4GLSO2qxOnFF+3cuROpqakYOnRosWW9evWCnZ0d2rdvj507d5a5ndOnT8PT0xP29vbyeQEBAcjIyMC1a9cqVE/btm0xZswY2Nvbw8PDA/Pnz4dMJlO+U0REGlJ4SpGBi0jTqsSRrhcFBwcjICAAderUkc8zNTXFkiVL0K5dO+jo6GDr1q0ICgrCjh070KtXrxK3k5SUpBC4AMink5KSlK7nzp07OHLkCD744APs2bMHt27dwscff4y8vDzMmjWrxHVycnKQk5Mjn87IyFD6/YiIXtbDrBx8sOosoh8wcBFpmlZD17Rp0/DNN9+U2eb69etwdXWVT9+/fx/79+/Hpk2bFNrZ2Nhg0qRJ8umWLVsiISEBixcvLjV0qUpBQQHs7OywcuVK6OrqwtfXF/Hx8Vi8eHGpoWvBggX46quv1FoXEdHzng9c9uaFF803YOAi0hithq5PP/0UQ4YMKbNNgwYNFKZDQkJgbW2tVJBq3bo1Dh48WOpyBwcHnDt3TmHegwcP5MuU5ejoCH19fejq6srnNWvWDElJScjNzYWBgUGxdaZPn64QEjMyMuDs7Kz0exIRVcTDf+9SvPEgi4GLSEu0GrpsbW1ha2urdHshBEJCQuR3GJYnIiICjo6OpS5v27Yt5s2bh+TkZNjZ2QEADh48CHNzc7i5uSldV7t27bB+/XoUFBRAR6fwMrkbN27A0dGxxMAFAFKpFFKpVOn3ICJ6WSmZOfhg9X+Ba8OHbVHfxkTbZRHVOFXqQvojR44gJiYGI0aMKLZs3bp1+PPPPxEVFYWoqCjMnz8fa9aswbhx4+Rttm/frnCqslu3bnBzc8PAgQNx6dIl7N+/HzNmzMCYMWMUAlFERAQiIiKQlZWFlJQUREREIDIyUr589OjRSEtLw4QJE3Djxg3s3r0b8+fPx5gxY9S0J4iIlHPjQSbe+fkkAxdRJVClLqQPDg6Gv7+/QnB63ty5cxEXFwc9PT24urpi48aN6N27t3x5eno6oqOj5dO6urrYtWsXRo8ejbZt28LExASDBw/GnDlzFLbr4+Mj//8LFy5g/fr1cHFxQWxsLADA2dkZ+/fvxyeffAIvLy/Url0bEyZMwNSpU1XYeyKiijl2IwVj/riIzJx8uFgbY93QVqjHwEWkNRIhhNB2EVR4TZeFhQXS09Nhbm6u7XKIqIr7/UwcZu28BlmBQKt6tbBioC9qmZR8uQMRvbyK/H5XqSNdRERUNlmBwLzd17HmZAwA4N0WtbHgXU9I9XTLWZOI1I2hi4iomniSk4/xf4bjcFQyAGBKQFN83KlhsSd3EJF2MHQREVUDielPMXzteUQmZkCqp4MlfZqjh5eTtssioucwdBERVXFX7qdj+LowJGfmwMbUAKsG+cGnrpW2yyKiFzB0ERFVYfuvJWHihgg8zZOhib0pgge3hHMtY22XRUQlYOgiIqqChBBYeewOFu6LghDAa01ssay/D8wNyx84moi0g6GLiKiKyZMVYOaOq9gQdg8AMKitC77s4QY93So13jVRjcPQRURUhaRn52H0Hxdw6nYqdCTAlz3cMKRdfW2XRURKYOgiIqoi4lKfYOjaMNxJeQITA1381N8Hb7jaa7ssIlISQxcRURUQFpuGD//vPB5l58HRwhDBg1vCzYlPryCqShi6iIgque3h9zF1yxXkygrgVccCqwf5wc7cUNtlEVEFMXQREVVSQgh8f/AGfjxyCwDwprsDvu/rDSMDPtKHqCpi6CIiqoSe5ckwZctl/H0pAQDwUceG+CygKXR0+EgfoqqKoYuIqJJ5mJWDD//vPC7efQw9HQnmv+uJPn7O2i6LiF4RQxcRUSVy40Emhq0Nw/1HT2FhpI9fBrSAf0MbbZdFRCrA0EVEVEkcu5GCMX9cRGZOPlysjbFmSEs0tDXVdllEpCIMXURElcDvZ+Iwa+c1yAoEWtWrhRUDfVHLxEDbZRGRCjF0ERFpkaxAYN7u61hzMgYA8G6L2ljwriekerxDkai6YegiItKSJzn5GP9nOA5HJQMApgQ0xcedGkIi4R2KRNURQxcRkRYkpj/F8LXnEZmYAameDpb0aY4eXk7aLouI1Iihi4hIw67cT8fwdWFIzsyBjakBVg3yg09dK22XRURqxtBFRKRB+68lYeKGCDzNk6GJvSmCB7eEcy1jbZdFRBrA0EVEpAFCCKw8dgcL90VBCOC1JrZY1t8H5ob62i6NiDSEoYuISM3yZAWYueMqNoTdAwAMauuCL3u4QU9XR8uVEZEmMXQREalRXOoTTNp0CRfiHkFHAnzZww1D2tXXdllEpAUMXUREaiCEwIawe5i7KxLZuTKYSvXwYz9vvOFqr+3SiEhLGLqIiFQsOfMZpm+9Ih9/q3X9Wvj2f815wTxRDcfQRUSkQvuuJmL6tit4lJ0HA10dTAloiuHt60NHhwOeEtV0DF1ERCqQ8SwPs3dew7aL8QCAZo7mWNrXG00dzLRcGRFVFgxdRESv6NTth5iy+TLiHz+FjgT4qGNDTOzSBAZ6vDuRiP7D0EVE9JKe5cmweH80gk8UPqy6bi1jfNenOfzq1dJyZURUGTF0ERG9hKvx6fhkYwRuJmcBAPq1qosZgc1gIuVfq0RUMv7tQERUAfmyAqz45zaWHrqJ/AIBG1MpFvX25FAQRFQuhi4iIiXFPnyCSZsicPHuYwDAWx4OmPeOJ2qZGGi3MCKqEhi6iIjKIYTA+nN38fWu63iaJ4OZVA9fve2Od3xqQyLhUBBEpByGLiKiMiRnPMPUrZdxNDoFANC2gTW+7dMctS2NtFwZEVU1DF1ERKXYcyURX2z/d6BTPR18FtAUw9pxoFMiejkMXUREL0h/WjjQ6fbwwoFO3Z3M8X1fbzSx50CnRPTyGLqIiJ5z6tZDTN58CQnpz6AjAT7u1AjjOzfmQKdE9MoYuoiIUDjQ6aJ90VhzsnCg03rWxljSxxu+LlZaroyIqguGLiKq8a7Gp2Pixgjc+neg0w9a18Xn3TnQKRGpFv9GIaIaK19WgF9Cb+OHw4UDndqaSbHoPS+87mqn7dKIqBpi6CKiGinm34FOw/8d6LS7pwO+DuJAp0SkPgxdRFSjCCHw+9m7mL/734FODfUw5213BHlzoFMiUi+GLiKqMR5kPMNnWy7jnxuFA536N7TGt/9rDicOdEpEGsDQRUQ1wq7LCZix4yoeZ+dBqqeDqW+6Yoh/PQ50SkQaw9BFRNVazMMnWLw/CnuuJAEAPGqb4/s+3mjMgU6JSMMYuoioWkp4/BQ/HbmJTefvQ1YgoCMBxrzeCOPe4ECnRKQdDF1EVK2kZuXg59Db+O1MHHLzCwAAb7ja4dNuTeDuZKHl6oioJmPoIqJqIf1pHlYfv4M1J2LwJFcGAGhVvxY+C2gKv3q1tFwdERFDFxFVcdm5+Vh3Kg4r/rmN9Kd5AACvOhaY3K0pOjS24TAQRFRpMHTVAPcfZaOOlbG2yyBSqZx8GTacu4dlR28hJTMHANDYzhSfdmuKAHd7hi0iqnQYuqq5lMwcdPnuH7Soa4VPujZBS55moSouX1aA7eHxWHroJuIfPwUAONcywiddmuBt79rQ5RAQRFRJMXRVc+dj0yArEDh1OxWnbp9Gh8Y2mNilCXxdrLRdGlGFFBQI7LuWhCUHonE75QkAwM5MivGdG6OPnzPvSCSiSk8ihBDaLoKAjIwMWFhYID09Hebm5ird9v1H2Vh+9DY2n7+H/ILCj/u1Jrb4pEtj+NRl+KLKTQiB0BspWHIgGlfjMwAAlsb6+LhTQwxsUw9GBrparpCIarKK/H4zdFUS6gxdRe6lZWPZkVvYcrFw3CIAeL2pLT7p2gRedSzV8p5Er+JcTBoW749CWOwjAICpVA/D29fHiA71YWaor+XqiIgYuqokTYSuIndTs/HTkZvYFh4vD19dmtlhYpcm8KjNcYxI+67cT8e3B6Llz0iU6ulgsH89fNSxIWqZGGi5OiKi/zB0VUGaDF1FYh8+wY9HbmJHeDz+zV7o6maPiV0acxBJ0opbyZn47uAN+SN79HQk6NvSGePeaAwHC0MtV0dEVBxDVxWkjdBV5E5KFn46cgt/RfwXvt50d8DEro3h6qDZWqhmupeWjaWHbmJ7+H0UCEAiAYK8a2Nil8ZwsTbRdnlERKVi6KqCtBm6itxKzsKPh2/i78sJKPpWdPd0wITOTdDUgQ8HJtVLzniGZUdv4c9zd5EnK/zSBbjbY1LXpvzOEVGVwNBVBVWG0FXk5oNMLD18E3uuJEL8e9Qh0NMRE7s0RiM7/hDSq3v0JBcrjt3GulOxeJZX+HzEDo1tMLlbUzR3ttRucUREFcDQVQVVptBVJDopEz8c/u/6GokE6NXcCeM7N0ZDW1MtV0dVUVZOPtaciMGqY3eQmZMPAGhR1xKTA5rCv6GNlqsjIqo4hq4qqDKGriLXEzOw9NAN7L/2AACgIwHe9q6N8Z0bo74Nr7eh8j3Lk+H3M3H4OfQ20p7kAgCaOZpjSkATvN7Ujo/sIaIqi6GrCqrMoavItYR0LD10Ewcj/wtf7/jUwfjOjXixMxVTUCAQfu8R/r6UiF2XE/Ewq/D5iPVtTDCpaxMEejpCh4/sIaIqjqGrCqoKoavIlfvpWHroBg5HJQMAdHUkeNenNsa90Rh1rflg7ZpMCIGr8Rn4+3ICdl9OlD8bEQCcLAwxoUtjvNeiDvR0+cgeIqoeGLqqoKoUuopE3HuMpYduIDS6cABLPR0JevvWwZjXG8G5FsNXTRKdlIm/LyVg1+UExKZmy+ebSvXQzc0ePZo7on0jWz4fkYiqnYr8fleJvwFDQ0MhkUhKfIWFhQEAYmNjS1x+5syZMrd99+5dBAYGwtjYGHZ2dpgyZQry8/PlyxMTE9G/f380adIEOjo6mDhxYonbWbp0KZo2bQojIyM4Ozvjk08+wbNnz1S2Dyojb2dLrB3aCts+9sdrTWyRXyCwIeweXv82FNO3XVE4ykHVz52UwiFGun73DwKWHsOyo7cQm5oNQ30dBHo5YsWAFjg/owu+6+uNN1ztGbiIqMbT03YByvD390diYqLCvJkzZ+Lw4cPw8/NTmH/o0CG4u7vLp62trUvdrkwmQ2BgIBwcHHDq1CkkJiZi0KBB0NfXx/z58wEAOTk5sLW1xYwZM/D999+XuJ3169dj2rRpWLNmDfz9/XHjxg0MGTIEEokE33333ct2u8poUdcK/zesFS7EpeH7gzdx4tZD/HnuLrZcuIe+LZ0x5vVGcLQw0naZpAL30rKx+0oi/r6UgGsJGfL5Bro66NjUFj28HNGlmT1MpFXirxYiIo2qkqcX8/LyULt2bYwbNw4zZ84EUHikq379+ggPD4e3t7dS29m7dy969OiBhIQE2NvbAwBWrFiBqVOnIiUlBQYGis9469SpE7y9vbF06VKF+WPHjsX169dx+PBh+bxPP/0UZ8+exYkTJ5SqpSqeXixNWGwavj94A6dupwIo/EF+29sJb7jawb+hDSyM+aDiquRBxjPsvpyIvy8nIPzuY/l8XR0J2jeyQQ8vR3Rzd4CFET9XIqp5KvL7XSX/Obpz506kpqZi6NChxZb16tULz549Q5MmTfDZZ5+hV69epW7n9OnT8PT0lAcuAAgICMDo0aNx7do1+Pj4KFWPv78/fv/9d5w7dw6tWrXCnTt3sGfPHgwcOLDUdXJycpCTkyOfzsjIKLVtVdOyXi2sH9kGZ+6k4vuDN3A2Jg2bL9zH5gv3oSMBmjtbokNjW7zW2AbNnS2hz4uqK53UrBzsvZqEvy8l4FxsmvwJBRIJ0Ka+NXo2d8KbHg58+DQRUQVUydAVHByMgIAA1KlTRz7P1NQUS5YsQbt27aCjo4OtW7ciKCgIO3bsKDV4JSUlKQQuAPLppKQkpevp378/Hj58iPbt20MIgfz8fHz00Uf4/PPPS11nwYIF+Oqrr5R+j6qoTQNrbBzVFmfvpGLftSQcv/kQt5KzEH73McLvPsaPh2/CTKqHNg2t8VpjG3RobAsXa2OO2aQl6dl52H8tCX9fTsCp26mQFfx3ENzXxQo9vRzR3dMRduZ88DQR0cvQauiaNm0avvnmmzLbXL9+Ha6urvLp+/fvY//+/di0aZNCOxsbG0yaNEk+3bJlSyQkJGDx4sVlHu1ShdDQUMyfPx8///wzWrdujVu3bmHChAmYO3eu/PTni6ZPn65Qb0ZGBpydndVap7a0bmCN1g0Kr61LePwUJ24+xLGbKThx6yEeZ+fhYOQD+dhfzrWM5EfB2ja04SkrNcvKycfh6w/w96UE/HMjRf78QwDwrG2Bns0dEejlhNqWvCaPiOhVaTV0ffrppxgyZEiZbRo0aKAwHRISAmtra6WCVOvWrXHw4MFSlzs4OODcuXMK8x48eCBfpqyZM2di4MCBGDFiBADA09MTT548wYcffogvvvgCOjrFT59JpVJIpVKl36O6cLI0Qp+WzujT0hmyAoFrCek4fvMhjt1IwcW7j3Av7SnWn72L9WfvQkdSeIdkh8a2eK2JDZrXseT4TirwLE+GI1HJ2HU5AYevJyMnv0C+rKm9GXo2d0QPLyfU49MGiIhUSquhy9bWFra2tkq3F0IgJCREfodheSIiIuDo6Fjq8rZt22LevHlITk6GnZ0dAODgwYMwNzeHm5ub0nVlZ2cXC1a6urrymqlkujoSeNWxhFcdS4x5vRGe5OTjbEwqjt14iOM3U3A75Qku3n2Mi3cf44d/T0W2bWiNDk0Kj4RxFHzl5eTLcPzGQ+y6nICDkQ/wJFcmX1bfxgQ9vRzRo7kTmtjzgeZEROpSpa7pOnLkCGJiYuRHlJ63bt06GBgYyC9+37ZtG9asWYPVq1fL22zfvh3Tp09HVFQUAKBbt25wc3PDwIEDsWjRIiQlJWHGjBkYM2aMwlGoiIgIAEBWVhZSUlIQEREBAwMDeTDr2bMnvvvuO/j4+MhPL86cORM9e/aUhy8qn4lUD2+42uMN18Lr6uIfP8WJmyk4dvMhTv57KvJA5AMc+PdUZN1axujw77VgbRta81QkgOzcfMQ8fII7KU/+/W8WYh4+wa3kLIWgVdvSCD2aO6KnlxPcncx5HR0RkQZUqSEj+vfvj7i4OJw8ebLYsnXr1uGbb75BXFwc9PT04OrqiilTpqB3797yNmvXrsXQoUMVjj7FxcVh9OjRCA0NhYmJCQYPHoyFCxdCT++/PFrSD5KLiwtiY2MBAPn5+Zg3bx5+++03xMfHw9bWFj179sS8efNgaWmpVN+q05AR6iArELgan47j/4awi3GPkP/chd66OpJ/T0UWhrDmdSyq7anIfFkB7j96ipiHT3D731BVFLSSMkofkNfOTIoeXk7o0dwRPs6WDFpERCrAxwBVQQxdFZOVk4+zd1ILrwe7mYI7KU8UlpsZ6sG/ofW/F+XbVrlnQgoh8DArV36kqjBgPUHMwyzcTctWuOD9RbVMDFDfxgT1bUzQwNYEDWxMUN/GFI3sTKHLB0wTEakUQ1cVxND1au4/ysaJmw9x/OZDnLj1EOlP8xSW25lJYWVsAFNDPZhK9WBqqAcz6X//byrVg5mhHkyl+oX/LVr+7zITAz3oqCGwPMn593TgwyeI+TdUFf1/Zk5+qetJ9XTkoaq+jQka2Jii/r8By9KYY2cREWkKQ1cVxNClOrICgSvx6fLrwV48FfmyTEsMaYohzsxQv3iwM9SDno4Ed9OycSflv4B152EWHmTklPp+EglQx8oI9W1M0eD5gGVrCkdzQ7WEQCIiqhiGriqIoUt9snLycTs5C1k5+ch8lo+snHxkPcsrnM7JR9az5+f/Oy8nTz5fFYGtLLVMDP49BWjy79EqUzSwNUHdWsYw1OeNGERElVm1fwwQUUWYSvXQ3NnypdYVQiAnv0AeyBSCW1EwK5qnsDxPYZ2cvALUtjL69xor0+cCFk8HEhHVFAxdRGWQSCQw1NeFob4ubExr3mC2RESkOtXznnoiIiKiSoahi4iIiEgDGLqIiIiINIChi4iIiEgDGLqIiIiINIChi4iIiEgDGLqIiIiINIChi4iIiEgDGLqIiIiINIChi4iIiEgDGLqIiIiINIChi4iIiEgDGLqIiIiINIChi4iIiEgD9LRdABUSQgAAMjIytFwJERERKavod7vod7wsDF2VRGZmJgDA2dlZy5UQERFRRWVmZsLCwqLMNhKhTDQjtSsoKEBCQgLMzMwgkUhUuu2MjAw4Ozvj3r17MDc3V+m2q4Ka3n+A+4D9r9n9B7gPanr/AfXtAyEEMjMz4eTkBB2dsq/a4pGuSkJHRwd16tRR63uYm5vX2D9sAPsPcB+w/zW7/wD3QU3vP6CefVDeEa4ivJCeiIiISAMYuoiIiIg0gKGrBpBKpZg1axakUqm2S9GKmt5/gPuA/a/Z/Qe4D2p6/4HKsQ94IT0RERGRBvBIFxEREZEGMHQRERERaQBDFxEREZEGMHQRERERaQBDVxVz7Ngx9OzZE05OTpBIJNixY0e564SGhqJFixaQSqVo1KgR1q5dW6zN8uXLUa9ePRgaGqJ169Y4d+6c6otXAXX0f8GCBWjZsiXMzMxgZ2eHoKAgREdHq6cDKqCu70CRhQsXQiKRYOLEiSqrWZXU1f/4+HgMGDAA1tbWMDIygqenJ86fP6/6DqiAOvaBTCbDzJkzUb9+fRgZGaFhw4aYO3euUs+T07SK9j8xMRH9+/dHkyZNoKOjU+p3e/PmzXB1dYWhoSE8PT2xZ88e1RevAuro/6pVq9ChQwdYWVnBysoKXbp0qbS/A4D6vgNFNmzYAIlEgqCgIJXVDDB0VTlPnjxB8+bNsXz5cqXax8TEIDAwEK+//joiIiIwceJEjBgxAvv375e32bhxIyZNmoRZs2bh4sWLaN68OQICApCcnKyubrw0dfT/n3/+wZgxY3DmzBkcPHgQeXl56NatG548eaKubrwSdeyDImFhYfj111/h5eWl6rJVRh39f/ToEdq1awd9fX3s3bsXkZGRWLJkCaysrNTVjVeijn3wzTff4JdffsGyZctw/fp1fPPNN1i0aBF++ukndXXjpVW0/zk5ObC1tcWMGTPQvHnzEtucOnUK/fr1w/DhwxEeHo6goCAEBQXh6tWrqixdJdTR/9DQUPTr1w9Hjx7F6dOn4ezsjG7duiE+Pl6VpauMOvZBkdjYWEyePBkdOnRQRamKBFVZAMT27dvLbPPZZ58Jd3d3hXl9+/YVAQEB8ulWrVqJMWPGyKdlMplwcnISCxYsUGm9qqaq/r8oOTlZABD//POPKspUK1Xug8zMTNG4cWNx8OBB0bFjRzFhwgQVV6t6qur/1KlTRfv27dVRotqpah8EBgaKYcOGKbR59913xQcffKCyWtVBmf4/r7Tvdp8+fURgYKDCvNatW4tRo0a9YoXqpar+vyg/P1+YmZmJdevWvXxxGqLKfZCfny/8/f3F6tWrxeDBg8Xbb7+tkhqL8EhXNXf69Gl06dJFYV5AQABOnz4NAMjNzcWFCxcU2ujo6KBLly7yNlVZef0vSXp6OgCgVq1aaq1NU5TdB2PGjEFgYGCxtlWdMv3fuXMn/Pz88L///Q92dnbw8fHBqlWrNF2q2iizD/z9/XH48GHcuHEDAHDp0iWcOHECb731lkZr1ZaX+buiOsvOzkZeXl61+XtQWXPmzIGdnR2GDx+ulu3zgdfVXFJSEuzt7RXm2dvbIyMjA0+fPsWjR48gk8lKbBMVFaXJUtWivP4bGRkpLCsoKMDEiRPRrl07eHh4aLJUtVFmH2zYsAEXL15EWFiYlqpUH2X6f+fOHfzyyy+YNGkSPv/8c4SFhWH8+PEwMDDA4MGDtVS56iizD6ZNm4aMjAy4urpCV1cXMpkM8+bNwwcffKClqjWrtH2UlJSkpYq0a+rUqXBycqp2/wgry4kTJxAcHIyIiAi1vQdDF9FzxowZg6tXr+LEiRPaLkVj7t27hwkTJuDgwYMwNDTUdjlaUVBQAD8/P8yfPx8A4OPjg6tXr2LFihXVInQpY9OmTfjjjz+wfv16uLu7y6/9cnJyqjH7gAotXLgQGzZsQGhoaI35OyEzMxMDBw7EqlWrYGNjo7b3Yeiq5hwcHPDgwQOFeQ8ePIC5uTmMjIygq6sLXV3dEts4ODhoslS1KK//zxs7dix27dqFY8eOoU6dOposU63K2wcXLlxAcnIyWrRoIV8uk8lw7NgxLFu2DDk5OdDV1dV02SqjzHfA0dERbm5uCm2aNWuGrVu3aqxOdVJmH0yZMgXTpk3D+++/DwDw9PREXFwcFixYUCNCV2n7qDr8PVgR3377LRYuXIhDhw5V6htqVO327duIjY1Fz5495fMKCgoAAHp6eoiOjkbDhg1f+X14TVc117ZtWxw+fFhh3sGDB9G2bVsAgIGBAXx9fRXaFBQU4PDhw/I2VVl5/QcAIQTGjh2L7du348iRI6hfv76my1Sr8vZB586dceXKFURERMhffn5++OCDDxAREVGlAxeg3HegXbt2xYYJuXHjBlxcXDRSo7opsw+ys7Oho6P4k6Crqyv/4anulNlH1d2iRYswd+5c7Nu3D35+ftouR6NcXV2L/T3Yq1cv+R2/zs7OqnkjlV6WT2qXmZkpwsPDRXh4uAAgvvvuOxEeHi7i4uKEEEJMmzZNDBw4UN7+zp07wtjYWEyZMkVcv35dLF++XOjq6op9+/bJ22zYsEFIpVKxdu1aERkZKT788ENhaWkpkpKSNN6/8qij/6NHjxYWFhYiNDRUJCYmyl/Z2dka758y1LEPXlSZ715UR//PnTsn9PT0xLx588TNmzfFH3/8IYyNjcXvv/+u8f4pQx37YPDgwaJ27dpi165dIiYmRmzbtk3Y2NiIzz77TOP9K09F+y+EkLf39fUV/fv3F+Hh4eLatWvy5SdPnhR6enri22+/FdevXxezZs0S+vr64sqVKxrtmzLU0f+FCxcKAwMDsWXLFoW/BzMzMzXaN2WpYx+8SB13LzJ0VTFHjx4VAIq9Bg8eLIQo/JJ07Nix2Dre3t7CwMBANGjQQISEhBTb7k8//STq1q0rDAwMRKtWrcSZM2fU35mXoI7+l7Q9ACXup8pAXd+B51Xm0KWu/v/999/Cw8NDSKVS4erqKlauXKn+zrwkdeyDjIwMMWHCBFG3bl1haGgoGjRoIL744guRk5OjmU5VwMv0v6T2Li4uCm02bdokmjRpIgwMDIS7u7vYvXu3ZjpUQerov4uLS4ltZs2apbF+VYS6vgPPU0fokvxbCBERERGpEa/pIiIiItIAhi4iIiIiDWDoIiIiItIAhi4iIiIiDWDoIiIiItIAhi4iIiIiDWDoIiIiItIAhi6iGkIikWDHjh3aLkMroqKi0KZNGxgaGsLb21vj7x8bGwuJRIKIiAiNv3dNM3PmTHz44YcVWicyMhJ16tTBkydP1FQVUSGGLqIqbMiQIZBIJJBIJNDX14e9vT26du2KNWvWFHtmXmJiIt566y2ltlvdAtqsWbNgYmKC6OjoYs/XKzJkyBAEBQUVmx8aGgqJRILHjx+rt8gqrjIEy6SkJPzwww/44osvii07ffo0dHV1ERgYWGyZm5sb2rRpg++++04TZVINxtBFVMW9+eabSExMRGxsLPbu3YvXX38dEyZMQI8ePZCfny9v5+DgAKlUqsVKtef27dto3749XFxcYG1tre1yihFCKHxW9HJWr14Nf3//Eh9UHhwcjHHjxuHYsWNISEgotnzo0KH45Zdf+DmQWjF0EVVxUqkUDg4OqF27Nlq0aIHPP/8cf/31F/bu3Yu1a9fK2z1/9Co3Nxdjx46Fo6MjDA0N4eLiggULFgAA6tWrBwB45513IJFI5NO3b9/G22+/DXt7e5iamqJly5Y4dOiQQi316tXD/PnzMWzYMJiZmaFu3bpYuXKlQpv79++jX79+qFWrFkxMTODn54ezZ8/Kl//1119o0aIFDA0N0aBBA3z11Vdl/hAWFBRgzpw5qFOnDqRSKby9vbFv3z6Ffl+4cAFz5syBRCLB7NmzK7iH//PkyROYm5tjy5YtCvN37NgBExMTZGZmAgDOnTsHHx8fGBoaws/PD+Hh4Qrti46e7d27F76+vpBKpThx4gRycnIwfvx42NnZwdDQEO3bt0dYWJjCujt37kTjxo1haGiI119/HevWrSt2JO7EiRPo0KEDjIyM4OzsjPHjxyucOlPmc3rRvn370L59e1haWsLa2ho9evTA7du35cvr168PAPDx8YFEIkGnTp0AlP/5FB0h27Rpk7zmli1b4saNGwgLC4Ofnx9MTU3x1ltvISUlpcwaN2zYgJ49exabn5WVhY0bN2L06NEIDAxU+HNRpGvXrkhLS8M///xT5nsQvRKVPsmRiDSqrAeyNm/eXLz11lvyaQBi+/btQgghFi9eLJydncWxY8dEbGysOH78uFi/fr0QQojk5GT5A78TExNFcnKyEEKIiIgIsWLFCnHlyhVx48YNMWPGDGFoaCji4uLk7+Hi4iJq1aolli9fLm7evCkWLFggdHR0RFRUlBBCiMzMTNGgQQPRoUMHcfz4cXHz5k2xceNGcerUKSGEEMeOHRPm5uZi7dq14vbt2+LAgQOiXr16Yvbs2aXug++++06Ym5uLP//8U0RFRYnPPvtM6Ovrixs3bgghhEhMTBTu7u7i008/FYmJiSIzM7NC+7LowbqPHj0SQggxcuRI0b17d4U2vXr1EoMGDZL30dbWVvTv319cvXpV/P3336JBgwYCgAgPD1fYppeXlzhw4IC4deuWSE1NFePHjxdOTk5iz5494tq1a2Lw4MHCyspKpKamCiGEuHPnjtDX1xeTJ08WUVFR4s8//xS1a9dWqO/WrVvCxMREfP/99+LGjRvi5MmTwsfHRwwZMkTpz6kkW7ZsEVu3bhU3b94U4eHhomfPnsLT01PIZDIhhBDnzp0TAMShQ4dEYmKivObyPp+YmBgBQLi6uop9+/aJyMhI0aZNG+Hr6ys6deokTpw4IS5evCgaNWokPvroo1LrS01NFRKJRJw5c6bYsuDgYOHn5yeEKHywecOGDUVBQUGxdq1bt660D3im6oGhi6gKKyt09e3bVzRr1kw+/XzoGjdunHjjjTdK/OF5sW1Z3N3dxU8//SSfdnFxEQMGDJBPFxQUCDs7O/HLL78IIYT49ddfhZmZmfwH+UWdO3cW8+fPV5j322+/CUdHx1JrcHJyEvPmzVOY17JlS/Hxxx/Lp5s3b17uj+ngwYOFrq6uMDExUXgZGhoqhJqzZ88KXV1dkZCQIIQQ4sGDB0JPT0+EhobK+2htbS2ePn0q3/Yvv/xSYujasWOHvE1WVpbQ19cXf/zxh3xebm6ucHJyEosWLRJCCDF16lTh4eGhUPcXX3yhUN/w4cPFhx9+qNDm+PHjQkdHR15TeZ+TMlJSUgQAceXKFSHEf+GpqI9Fyvt8itZbvXq1fPmff/4pAIjDhw/L5y1YsEA0bdq01HrCw8MFAHH37t1iy/z9/cXSpUuFEELk5eUJGxsbcfTo0WLt3nnnHYVwSqRqPL1IVE0JISCRSEpcNmTIEERERKBp06YYP348Dhw4UO72srKyMHnyZDRr1gyWlpYwNTXF9evXcffuXYV2Xl5e8v+XSCRwcHBAcnIyACAiIgI+Pj6oVatWie9x6dIlzJkzB6ampvLXyJEjkZiYiOzs7GLtMzIykJCQgHbt2inMb9euHa5fv15un170+uuvIyIiQuG1evVqhTatWrWCu7s71q1bBwD4/fff4eLigtdeew0AcP36dXh5ecHQ0FC+Ttu2bUt8Pz8/P/n/3759G3l5eQp90dfXR6tWreR9iY6ORsuWLYvV87xLly5h7dq1CvswICAABQUFiImJkbcr63Mqyc2bN9GvXz80aNAA5ubm8tPOL37+z6vI5/N8Pfb29gAAT09PhXll1ff06VMAUNjvQOE+O3fuHPr16wcA0NPTQ9++fREcHFxsG0ZGRiV+z4hURU/bBRCRely/fl1+nc2LWrRogZiYGOzduxeHDh1Cnz590KVLl2LXKj1v8uTJOHjwIL799ls0atQIRkZG6N27N3JzcxXa6evrK0xLJBL5nZRGRkZl1pyVlYWvvvoK7777brFlL/6YqoOJiQkaNWqkMO/+/fvF2o0YMQLLly/HtGnTEBISgqFDh5YacMt7P1XLysrCqFGjMH78+GLL6tatK///sj6nkvTs2RMuLi5YtWoVnJycUFBQAA8Pj2Kf/8t6vp6iffnivLLqs7GxAQA8evQItra28vnBwcHIz8+Hk5OTfJ4QAlKpFMuWLYOFhYV8flpaGho2bPjqnSEqBY90EVVDR44cwZUrV/Dee++V2sbc3Bx9+/bFqlWrsHHjRmzduhVpaWkACn/sZDKZQvuTJ09iyJAheOedd+Dp6QkHBwfExsZWqC4vLy9ERETI3+dFLVq0QHR0NBo1alTspaNT/K8rc3NzODk54eTJk8VqdXNzq1BtFTFgwADExcXhxx9/RGRkJAYPHixf1qxZM1y+fBnPnj2Tzztz5ky522zYsCEMDAwU+pKXl4ewsDB5X5o2bYrz588rrPfihfYtWrRAZGRkifvQwMDgpfqbmpqK6OhozJgxA507d0azZs3w6NEjhTZF237+e6PJz6dhw4YwNzdHZGSkfF5+fj7+7//+D0uWLFE4ennp0iU4OTnhzz//VNjG1atX4ePjo9K6iJ7H0EVUxeXk5CApKQnx8fG4ePEi5s+fj7fffhs9evTAoEGDSlznu+++w59//omoqCjcuHEDmzdvhoODAywtLQEU3t12+PBhJCUlyX9cGzdujG3btsl/tPr371/mkYeS9OvXDw4ODggKCsLJkydx584dbN26FadPnwYAfPnll/i///s/fPXVV7h27RquX7+ODRs2YMaMGaVuc8qUKfjmm2+wceNGREdHY9q0aYiIiMCECRMqVFtFWFlZ4d1338WUKVPQrVs31KlTR76sf//+kEgkGDlyJCIjI7Fnzx58++235W7TxMQEo0ePxpQpU7Bv3z5ERkZi5MiRyM7OxvDhwwEAo0aNQlRUFKZOnYobN25g06ZN8jvxio4OTZ06FadOncLYsWMRERGBmzdv4q+//sLYsWNfqb/W1tZYuXIlbt26hSNHjmDSpEkKbezs7GBkZIR9+/bhwYMHSE9PB6C5z0dHRwddunTBiRMn5PN27dqFR48eYfjw4fDw8FB4vffeewqnGGNjYxEfH48uXbqotC4iBdq+qIyIXt7gwYMFAAFA6OnpCVtbW9GlSxexZs0a+V1lRfDcxfErV64U3t7ewsTERJibm4vOnTuLixcvytvu3LlTNGrUSOjp6QkXFxchROEFz6+//rowMjISzs7OYtmyZaJjx45iwoQJ8vVcXFzE999/r/C+L17EHhsbK9577z1hbm4ujI2NhZ+fnzh79qx8+b59+4S/v78wMjIS5ubmolWrVmLlypWl7gOZTCZmz54tateuLfT19UXz5s3F3r17y6yhtH2pzN2LRQ4fPiwAiE2bNhVb5/Tp06J58+bCwMBAeHt7i61bt5Z4If2L23z69KkYN26csLGxEVKpVLRr106cO3dOoc1ff/0lGjVqJKRSqejUqZP8Iv3nL9w/d+6c6Nq1qzA1NRUmJibCy8tL4WJ2ZT6nFx08eFA0a9ZMSKVS4eXlJUJDQ4vdcLFq1Srh7OwsdHR0RMeOHYUQ5X8+JV2AX9L+CQkJERYWFqXWJ4QQe/bsEbVr15Z/93v06FHsTtMiZ8+eFQDEpUuXhBBCzJ8/XwQEBJS5faJXJRFCCO3EPSKiquu3337DJ598goSEhJc+bacK8+bNw4oVK3Dv3j2t1VBZCCHQunVrfPLJJ/IL55WRm5uLxo0bY/369cUu+idSJV5IT0RUAdnZ2UhMTMTChQsxatQojQeun3/+GS1btoS1tTVOnjyJxYsXv9Kpw+pEIpFg5cqVuHLlSoXWu3v3Lj7//HMGLlI7HukiIqqA2bNnY968eXjttdfw119/wdTUVKPv/8knn2Djxo1IS0tD3bp1MXDgQEyfPh16evw3NFFlx9BFREREpAG8e5GIiIhIAxi6iIiIiDSAoYuIiIhIAxi6iIiIiDSAoYuIiIhIAxi6iIiIiDSAoYuIiIhIAxi6iIiIiDSAoYuIiIhIA/4ftTIg+vfsBuwAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pylab.plot(distances, energies)\n",
    "pylab.xlabel('Distance of Hydrogen atom (A)')\n",
    "pylab.ylabel('Energy (Ha)')\n",
    "pylab.title('H2O molecule, one H atom distance varied')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "qiskit==1.1.0\n",
      "qiskit-aer==0.14.2\n",
      "qiskit-algorithms==0.3.0\n",
      "qiskit-ibm-runtime==0.25.0\n",
      "qiskit-machine-learning==0.7.2\n",
      "qiskit-nature==0.7.2\n",
      "qiskit-nature-pyscf==0.4.0\n",
      "qiskit-qasm3-import==0.5.0\n",
      "qiskit-transpiler-service==0.4.5\n"
     ]
    }
   ],
   "source": [
    "! pip freeze | grep qiskit"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
